package tmt.usercenter.web.service;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.stereotype.Component;

/**
 * 基础组件
 * Created by Stark on 2017/3/2.
 */
@Component
public class BaseComponent {

	protected MessageSource messageSource;
	protected MessageSourceAccessor messageSourceAccessor;

	protected final Logger logger = LoggerFactory.getLogger(this.getClass());

	@Autowired
	public void setMessageSource(MessageSource messageSource) {
		this.messageSource = messageSource;
		this.messageSourceAccessor = new MessageSourceAccessor(messageSource);
	}

	/**
	 * 获取国际化消息
	 *
	 * @param code message code
	 * @return 国际化消息
	 * @deprecated 为了方便在 ide 中从 message code 跳转到对应的 message 定义。
	 */
	@Deprecated
	public String getMessage(String code) {
		return getMessage(code, null);
	}

	/**
	 * 获取国际化消息
	 *
	 * @param code message code
	 * @param args 格式化参数
	 * @return 国际化消息
	 * @deprecated 为了方便在 ide 中从 message code 跳转到对应的 message 定义。
	 */
	@Deprecated
	public String getMessage(String code, String args) {
		return getMessage(code, args, code);
	}

	/**
	 * 获取国际化消息
	 *
	 * @param code           message code
	 * @param args           格式化参数
	 * @param defaultMessage 查找不到时的默认消息
	 * @return 国际化消息
	 * @deprecated 为了方便在 ide 中从 message code 跳转到对应的 message 定义。
	 */
	@Deprecated
	public String getMessage(String code, String args, String defaultMessage) {
		return messageSource.getMessage(code, null, "", LocaleContextHolder.getLocale());
	}
}
